import re
# 从 flask 模块导入 Blueprint、jsonify 和 request 类
# Blueprint 用于创建 Flask 应用的蓝图，方便组织路由
# jsonify 用于将 Python 字典或列表转换为 JSON 响应
# request 用于处理客户端的 HTTP 请求
from flask import Blueprint, jsonify, request
# 从 app 包中导入 LogService 类，用于记录日志
from app import LogService
# 从 utils 模块导入 create_response 函数和 StateCode 类
# create_response 用于创建统一格式的响应
# StateCode 用于定义响应状态码
from utils import create_response, StateCode

# 创建一个名为 'id_card_server' 的蓝图
id_card_bp = Blueprint('id_card_server', __name__)

@id_card_bp.route('/id_card/verify', methods=['POST'])
def idCardVerify():
    """
    验证身份证号码是否有效。

    该函数接收一个包含身份证号码的 POST 请求，
    并使用正则表达式验证身份证号码是否为 18 位数字字符串。

    Returns:
        tuple: 包含 JSON 响应和 HTTP 状态码 200 的元组。
    """
    # 定义匹配 18 位数字字符串的正则表达式模式
    pattern = r'^\d{18}$'
    # 从请求的 JSON 数据中获取身份证号码
    id_number = request.json.get('idCardNo')
    # 定义验证结果的字典
    state = {
        # 使用 re.match 函数验证身份证号码是否匹配模式
        "result": bool(re.match(pattern, id_number))
    }
    # 调用 LogService 的 log 方法记录日志
    LogService.log()
    # 使用 create_response 函数创建响应，包含成功状态码和验证结果
    return jsonify(create_response(StateCode.SUCCESS, data=state)), 200